#ifndef VECTOR3D_H
#define VECTOR3D_H


#include "VectorUtil.h"

struct Vector3D 
{
	static Vector3D Add(const Vector3D &left, const Vector3D &right);
	static Vector3D Substract(const Vector3D &left, const Vector3D &right);
	static Vector3D Scale(const Vector3D &vect, const float scale);
	static float Dot(const Vector3D &left, const Vector3D &right);
	static Vector3D CrossLH(const Vector3D &left, const Vector3D &right);
	static Vector3D CrossRH(const Vector3D &left, const Vector3D &right);
	static void MoveBy(const Vector3D &by, /*ES*/ Vector3D &tomove);
	static float Length(const Vector3D &vect);
	static float LengthSq(const Vector3D &vect);
	static bool Normalize(Vector3D &vect);
	static void ScaleBy(Vector3D &vect, const float scale);
	static bool Equals(const Vector3D &left, const Vector3D &right);

	float x, y, z;
};


#endif